"""
类名：MemberService，继承于BaseService
实例属性：
    服务名称：service_name，赋值为'MemberService'
实例方法：
    def __init__(self)：
        # 先调父类__init__()，再添加实例属性 service_name

    def find_by_telephone(self, telephone):
        # 功能：根据手机号查询会员信息
        # :param telephone: 手机号
        # :return: 1. 会员存在，返回会员信息 2. 会员不存在，返回None

    def find_member_count_by_months(self, data_list):
        # 功能：根据日期统计会员数
        # :param date_list: 日期列表，格式如：["2021.7"]
        # :return: 返回列表，列表元素为对应月份的会员数，如：[10]

    def add(self, info): 添加会员
        # 功能：添加会员
        # :param info: 会员信息的字典格式数据，参考接口文档填入字段数据，手机号需要唯一
        #              如：{"fileNumber":"D0001", "name":"李白", "phoneNumber":"13020210002"}
        # :return: 添加成功返回True,  添加失败返回False
验证结果：
        # 1. 实例化对象
        # 2. 通过实例对象调用实例方法
        # 2.1 根据手机号查询会员信息
        # 2.2 根据日期统计会员数
        # 2.3 添加会员
"""
import json

from api.base_service import BaseService


class MemberService(BaseService):
    def __init__(self):
        # 调用 父类方法 super().父类方法名
        super().__init__()
        # 添加 属性
        self.service_name = "MemberService"

    # 根据手机号 查询
    # def findByTelephone(self):  # python 解释器，不鼓励使用 小驼峰 命名法
    def find_by_telephone(self, tel):
        # 使用 实例调用 invoke方法。传入 服务名、方法名、实参， 获取 响应结果
        ret = self.dclt.invoke(self.service_name, "findByTelephone", tel)
        if ret == "null":
            return None
        else:
            # 将 str类型的 字典、列表 格式数据，还原成原本的类型。
            return json.loads(ret)

    # 根据日期 统计 会员数
    def find_member_count_by_months(self,months):
        ret = self.dclt.invoke("MemberService", "findMemberCountByMonths", months)
        if ret == "Failed":
            return None
        else:
            return json.loads(ret)

    # 添加 会员
    def add(self, member):

        member["class"] = "com.itheima.pojo.Member"
        # 使用 DubboClient 实例 调 invoke 方法，传入 服务名，方法名，实参
        ret = self.dclt.invoke(self.service_name, "add", member)
        if ret == "null":
            return True
        else:
            return False




if __name__ == '__main__':
    # 创建实例对象
    ms = MemberService()

    tel = "13820220011"

    # 使用 实例调用  第一个方法
    resp = ms.find_by_telephone(tel)
    print("resp =", resp)
    print("type(resp) =", type(resp))

    # # 使用 实例调用  第二个方法
    # list1 = ["2022.5"]
    # resp1 = ms.find_member_count_by_months(list1)
    # print("resp =", resp1)
    # print("type(resp) =", type(resp1))

    # 使用 实例调用 第三个方法
    # mem = {"id": "100", "name": "lk", "phoneNumber": "15831257549", "sex": "3"}
    # rest1 = ms.add(mem)
    # print("响应结果 = ", rest1)
    # print("响应结果类型 = ", type(rest1))

